package frsf.cidisi.exercise.tp2.situationCalculus;

import frsf.cidisi.faia.agent.Action;
import frsf.cidisi.faia.agent.ActionFactory;

import frsf.cidisi.exercise.tp2.situationCalculus.actions.*;
import frsf.cidisi.exercise.tp2.situationCalculus.actions.ConectorLog;



public class ArqueologoActionFactory extends ActionFactory {

    private static ArqueologoActionFactory instance;
    private ConectorLog log = new ConectorLog();
	private int nroAldea = 1;
	private int cantidadAldeas;
	private int cantidadDeTesoros;
	private String[] nombreAldeas = {"Aragaey","Ase","Bresol","Bulovoe","Cabe","Cenede","Ergintone","Icaedur","Mixocu","Peregay","Vinizaile"};
	
    private ArqueologoActionFactory() {
    }

    public static ArqueologoActionFactory getInstance() {
        if (instance == null) {
            instance = new ArqueologoActionFactory();
        }
        return instance;
    }

    @Override
    protected String endActionString() {
        return "noAction";
    }

   
     @Override
   	 protected Action stringToAction(String stringAction) {
        Action actionObject = null;
        
	if (stringAction.equals("avanzarAAragaey")) {
            actionObject = new AvanzarAAragaey();
            ((AvanzarAAragaey)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAAragaey)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAAragaey)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAAse")) {
            actionObject = new AvanzarAAse();
            ((AvanzarAAse)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAAse)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAAse)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarABresol")) {
            actionObject = new AvanzarABresol();
            ((AvanzarABresol)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarABresol)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarABresol)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarABulovoe")) {
            actionObject = new AvanzarABulovoe();
            ((AvanzarABulovoe)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarABulovoe)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarABulovoe)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarACabe")) {
            actionObject = new AvanzarACabe();
            ((AvanzarACabe)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarACabe)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarACabe)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarACenede")) {
            actionObject = new AvanzarACenede();
            ((AvanzarACenede)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarACenede)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarACenede)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAErgintone")) {
            actionObject = new AvanzarAErgintone();
            ((AvanzarAErgintone)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAErgintone)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAErgintone)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAIcaedur")) {
            actionObject = new AvanzarAIcaedur();
            ((AvanzarAIcaedur)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAIcaedur)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAIcaedur)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAMixocu")) {
            actionObject = new AvanzarAMixocu();
            ((AvanzarAMixocu)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAMixocu)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAMixocu)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAPeregay")) {
            actionObject = new AvanzarAPeregay();
            ((AvanzarAPeregay)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAPeregay)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAPeregay)actionObject).setLog(log);
        } else if (stringAction.equals("avanzarAVinizaile")) {
            actionObject = new AvanzarAVinizaile();
            ((AvanzarAVinizaile)actionObject).setCantidadAldeas(getCantidadAldeas());
			((AvanzarAVinizaile)actionObject).setNombreAldeas(getNombreAldeas());
			((AvanzarAVinizaile)actionObject).setLog(log);
        } else if (stringAction.equals("tomarTesoro")) {
            actionObject = new TomarTesoro();
            ((TomarTesoro)actionObject).setCantidadAldeas(getCantidadAldeas());
			((TomarTesoro)actionObject).setCantidadDeTesoros(getCantidadDeTesoros());
			((TomarTesoro)actionObject).setLog(log);

        }
        
        return actionObject;
    }

	public void setLog(ConectorLog log) {
		this.log = log;
	}

	public ConectorLog getLog() {
		return log;
	}

	public void setNroAldea(int nroAldea) {
		this.nroAldea = nroAldea;
	}

	public int getNroAldea() {
		return nroAldea;
	}

	public void setCantidadAldeas(int cantidadAldeas) {
		this.cantidadAldeas = cantidadAldeas;
	}

	public int getCantidadAldeas() {
		return cantidadAldeas;
	}

	public void setNombreAldeas(String[] nombreAldeas) {
		this.nombreAldeas = nombreAldeas;
	}

	public String[] getNombreAldeas() {
		return nombreAldeas;
	}

	public void setCantidadDeTesoros(int cantidadDeTesoros) {
		this.cantidadDeTesoros = cantidadDeTesoros;
	}

	public int getCantidadDeTesoros() {
		return cantidadDeTesoros;
	}
}
